/**
 * @ClassName KP24_ArrayComparator
 * @Description: TODO
 * @Author: JCC
 * @CreateTime: 2023/10/25 11:45
 */

import java.util.Arrays;
import java.util.Comparator;

/**
 * 数组比较器
 */

class MyArrayComparator implements Comparator<Integer> {

    /**
     * 返回负数，表示前面一个数排在前面
     * 返回正数，表示后面一个数排在前面
     * 返回0，表示两个数一样，无所谓
     *
     * @param o1
     * @param o2
     * @return
     */
    @Override
    public int compare(Integer o1, Integer o2) {
        // 升序排列
        /*if (o1 < o2) {
            return -1;
        } else if (o1 > o2) {
            return 1;
        } else {
            return 0;
        }*/
        // o1 比 o2小返回负数：o1放在前面（升序排列）
        //return o1 - o2;

        // 降序排列
        /*if (o1 > o2) {
            return -1;
        } else if (o1 < o2) {
            return 1;
        } else {
            return 0;
        }*/
        return o2 - o1;
    }
}

public class KP24_ArrayComparator {

    /**
     * 打印数组函数
     *
     * @param array
     */
    public static void printArray(Integer[] array) {
        for (int num : array) {
            System.out.print(num + " ");
        }
        System.out.println();
    }


    public static void main(String[] args) {
        Integer[] array = {12, 51, 74, 34, 90, 67};
        printArray(array);
        // 1、系统自定义数组排序（默认从低到高）
        // Arrays.sort(array);
        // 2、自定义比较器（降序排列）基本数据类型不能使用比较器；包装类数据类型才能使用比较器
        // Arrays.sort(array,new MyArrayComparator());
        // 3、直接重写系统的Comparator方法
        /*Arrays.sort(array, new Comparator<Integer>() {
            // 升序排序
            @Override
            public int compare(Integer o1, Integer o2) {
                return o1 - o2;
            }
        });*/
        // 4、lambda表达式
        Arrays.sort(array,(o1,o2)->{return o1-o2;});

        printArray(array);

    }
}
